<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                template="./templates/templateMenu.xhtml"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.prime.com.tr/ui"
                xmlns:h="http://java.sun.com/jsf/html">

    <ui:define name="content">
        <script type="text/javascript"> //Reactualiza la tabla luego de eliminar pues necesitaria doble actualizacion
            function confirmFunction(opcion) {
                switch(opcion){
                    case 0: updateConfirm.jq.click(); 
                        break;
                    case 1: updateConfirmPagos.jq.click();
                        break;                    
                }
            }
        </script>

        <p:panel header="Creacion y CorreccionRecibos">
            <h:panelGrid columns="4" id="frmRecibo" >
                <h:outputText value="Número de Recibo:"/>
                <p:spinner id="txtNumRecibo"
                           min="1" max="99999999"
                           stepFactor="1"
                           value="#{recibosBean.recibo.nuNumRecibo}"
                           required="#{param['requireGroup1'] == '1'}"
                           requiredMessage="Requerido"/>
                <p:message for="txtNumRecibo"/>
                <h:outputText/>

                <h:outputText value="Concepto:"/>
                <p:inputTextarea id="txtConceptoRecibo"
                                 value="#{recibosBean.recibo.vcConcepto}"
                                 rows="2"
                                 required="#{param['requireGroup1'] == '1'}"
                                 requiredMessage="Requerido"/>
                <p:message for="txtConceptoRecibo"/>
                <p:commandButton id="cmdAgregar" 
                                 onclick="pagosDialogo.show();" 
                                 value="Agregar Detalle" />

                <h:outputText value="Fecha de Impresión:"/>
                <p:calendar id="txtFecha" 
                            showOn="button" 
                            required="#{param['requireGroup1'] == '1'}"
                            requiredMessage="Requerido"
                            pattern="dd/MM/yyyy"
                            locale="es"
                            navigator="true"
                            value="#{recibosBean.recibo.daFechImpresion}"
                            readOnlyInputText="true"/>
                <p:message for="txtFecha"/>
                <h:outputText/>            

                <h:outputText value="Serie del Recibo:"/>
                <h:selectOneMenu id="cboSerie" 
                                 value="#{recibosBean.selectedSerie}"
                                 required="#{param['requireGroup1'] == '1'}">
                    <f:selectItems value="#{recibosBean.cargarSeries()}"/>
                </h:selectOneMenu>
                <p:message for="cboSerie"/>
                <h:outputText/>
            </h:panelGrid>

            <h:panelGrid style="width: 100%">
                <p:toolbar>
                    <p:toolbarGroup align="left">      
                        <p:commandButton value="Nuevo" 
                                         title="Nuevo"
                                         action="#{recibosBean.nuevo}"
                                         process="@this"
                                         update="frmRecibo"
                                         image="ui-icon-document"/>
                        <p:commandButton value="Guardar"
                                         action="#{recibosBean.crear}"
                                         process="@this frmRecibo"
                                         oncomplete="confirmFunction(0);"
                                         update="frmRecibo msg dtRecibos"
                                         title="Guardar" 
                                         image="ui-icon-disk">
                            <f:param name="requireGroup1" value="1"/>
                        </p:commandButton> 
                    </p:toolbarGroup>
                </p:toolbar>
            </h:panelGrid>

            <p:dataTable id="dtRecibos" 
                         widgetVar="dtRecibos"
                         rows="10" 
                         paginator="true" 
                         var="varRecibos" 
                         value="#{recibosBean.listaRecibos}"
                         onRowEditUpdate="msg">

                <f:facet name="header">  
                    <h:panelGrid style="width: 200px;" 
                                 columnClasses="alignLeft,alignLeft,alignLeft" 
                                 columns="3">
                        <h:outputText value="Buscar: " />  
                        <p:inputText  id="globalFilter" 
                                      onkeyup="dtRecibos.filter()" 
                                      style="width:150px" />  
                    </h:panelGrid> 
                </f:facet>  

                <p:column filterBy="#{varRecibos[1]}" filterStyle="display:none"
                          headerText="Número de Recibo" 
                          style="text-align: center; width: 20px;">
                    <h:outputText value="#{varRecibos[1]}"/>
                </p:column>

                <p:column filterBy="#{varRecibos[2]}" filterStyle="display:none"
                          headerText="Concepto" 
                          style="text-align: center;">
                    <h:outputText value="#{varRecibos[2]}"/>
                </p:column>

                <p:column filterBy="#{recibosBean.getStringDate(varRecibos[3])}" filterStyle="display:none"
                          headerText="Fecha de Impresión" 
                          style="text-align: center; width: 50px;">
                    <h:outputText value="#{recibosBean.getStringDate(varRecibos[3])}"/>
                </p:column>

                <p:column filterBy="#{varRecibos[8]}" filterStyle="display:none"
                          headerText="Total" 
                          style="text-align: center; width: 20px;">
                    <h:outputText value="#{varRecibos[8]}"/>
                </p:column>

                <p:column style="width: 75px; text-align: center; " headerText="Acciones" >  
                    <f:facet name="header"/>
                    <!-- <p:rowEditor/> ROWEDITOR PARA MODIFICAR -->
                    <p:commandButton  image="ui-icon-pencil" 
                                      title="Modificar Recibo"
                                      action="#{recibosBean.modificar}"
                                      update="frmRecibo dtPagos frmDebe ingresoPagosDialogo"
                                      process="@this">  
                        <f:setPropertyActionListener value="#{varRecibos}" target="#{recibosBean.selectedRecibo}" />
                    </p:commandButton>  
                    <p:commandButton  image="ui-icon-trash"
                                      title="Eliminar Recibo"
                                      oncomplete="confirmation.show()" 
                                      update="confirm" 
                                      process="@this">  
                        <f:setPropertyActionListener value="#{varRecibos}" target="#{recibosBean.selectedRecibo}" />
                    </p:commandButton>  
                </p:column> 
            </p:dataTable>
        </p:panel>
        
        <p:confirmDialog message="Desea eliminar el registro?" 
                         width="400"   
                         header="Confirm" 
                         severity="alert" 
                         widgetVar="confirmation" 
                         modal="true">  
            <p:outputPanel id="confirm">
                <h:panelGrid>
                    <h:outputText  value="Recibo: #{recibosBean.selectedRecibo[1]}"/>
                    <h:panelGrid columns="2">
                        <p:commandButton value="Si" 
                                         update="dtRecibos frmRecibo msg"
                                         action="#{recibosBean.eliminar}" 
                                         oncomplete="confirmation.hide(); confirmFunction(); dtRecibos.filter()" 
                                         process="@this">
                        </p:commandButton>
                        <p:commandButton value="No" 
                                         onclick="confirmation.hide()" 
                                         type="button" />    
                    </h:panelGrid>
                </h:panelGrid>
            </p:outputPanel>
        </p:confirmDialog>

        <p:outputPanel id="ingresoPagosDialogo">
            <p:dialog header="Ingrese los Datos" 
                      widgetVar="pagosDialogo" 
                      minWidth="750" 
                      modal="true"
                      onCloseUpdate="frmPagos frmDebe dtPagos"
                      visible="#{not empty facesContext.maximumSeverity}">
                <p:fieldset legend="Concepto de Pagos">
                    <h:panelGrid columns="4" id="frmPagos" >
                        <h:outputText value="Concepto:"/>
                        <h:selectOneMenu id="cboConcepto" 
                                         onchange="onChangeConcepto()"
                                         value="#{recibosBean.selectedConcepto}"
                                         required="#{param['requireGroup2'] == '1'}">
                            <f:selectItem itemLabel="-Seleccione una Opción-" value="#{null}"/>
                            <f:selectItems value="#{matriculaBean.cargarConceptos()}"/>
                        </h:selectOneMenu>
                        <p:message for="cboConcepto" display="icon"/>
                        <h:outputText/>

                        <h:outputText value="Cantidad:"/>
                        <p:spinner id="txtCantidad" 
                                   style="width: 50px;" min="1" max="999"
                                   required="#{param['requireGroup2'] == '1'}"
                                   value="#{recibosBean.detalleRecibo.nuCantidad}"/>
                        <p:message for="txtCantidad" display="icon"/>
                        <h:outputText/>

                        <h:outputText value="Valor:"/>
                        <p:spinner id="txtValor" 
                                   style="width: 50px;" 
                                   min="1" 
                                   stepFactor="0.01"
                                   required="#{param['requireGroup2'] == '1'}"
                                   value="#{recibosBean.detalleRecibo.nuPrecio}"/>
                        <p:message for="txtValor" display="icon"/>
                        <h:outputText/>

                        <h:outputText value="Ocultar:"/>
                        <h:selectBooleanCheckbox id="chkEstado"
                                                 value="#{recibosBean.detalleRecibo.boOculto}">
                        </h:selectBooleanCheckbox>
                        <p:commandButton value="Agregar"
                                         image="ui-icon-plus"
                                         action="#{recibosBean.addDetallesRecibo}"
                                         process="@this frmPagos"
                                         update="frmPagos dtPagos frmDebe">
                            <f:param name="requireGroup2" value="1"/>
                        </p:commandButton>
                        <p:message for="txtPagoHide"/>
                        <p:inputText id="txtPagoHide" 
                                     style="display: none; ">
                            <f:validator disabled="#{param['requireGroup3'] != '1'}" 
                                         validatorId="recibosValidator"/>
                        </p:inputText>
                    </h:panelGrid>

                    <p:dataTable id="dtPagos" 
                                 widgetVar="dtPagos"                                        
                                 rows="5" 
                                 var="varPagos" 
                                 value="#{recibosBean.arregloDetalles}"
                                 onRowEditUpdate="msg">

                        <p:column headerText="Cantidad"
                                  style="text-align: center;
                                  width: 15px" >
                            <h:outputText value="#{varPagos[1].nuCantidad}"/>
                        </p:column>

                        <p:column headerText="Concepto"
                                  style="text-align: center;" >
                            <h:outputText value="#{varPagos[0]}"/>
                        </p:column>

                        <p:column headerText="Valor"
                                  style="text-align: center;
                                  width: 15px;" >
                            <h:outputText value="#{varPagos[1].nuPrecio}"/>
                        </p:column>

                        <p:column headerText="Estado"
                                  style="text-align: center;
                                  width: 15px;" >
                            <h:outputText value="#{varPagos[1].boOculto==true?'Oculto':'Visible'}"/>
                        </p:column>

                        <p:column style="width: 25px; text-align: center"
                                  headerText="Acción" >  
                            <f:facet name="header"/>
                            <p:commandButton  image="ui-icon-trash"
                                              title="Eliminar Concepto"
                                              action="#{recibosBean.removeDetalles}"
                                              oncomplete="confirmFunction(1);"
                                              update="frmPagos dtPagos frmDebe"
                                              process="@this"> 
                                <f:setPropertyActionListener target="#{recibosBean.selectedPago}"
                                                             value="#{varPagos}"/>
                            </p:commandButton>
                        </p:column>
                    </p:dataTable>

                    <h:panelGrid columns="4" 
                                 id="frmDebe">
                        <h:outputText value="Total: $ #{recibosBean.totalPagar} .::. "/>
                        <h:outputText value="Debe:"/>
                        <p:spinner id="txtDebe" 
                                   style="width: 60px;" 
                                   min="0" stepFactor="0.01"
                                   value="#{recibosBean.recibo.nuCantidadDeuda}" />                               
                    </h:panelGrid>
                    <h:panelGrid style="text-align:right" >
                        <p:commandButton id="cmdAceptarPago"
                                         value="Aceptar" 
                                         process="@this frmPagos dtPagos frmDebe" 
                                         update="ingresoPagosDialogo frmPagos dtPagos frmDebe" >
                            <f:param name="requireGroup3" value="1"/>
                        </p:commandButton> 
                    </h:panelGrid>

                </p:fieldset>
            </p:dialog>
        </p:outputPanel>

        <p:remoteCommand name="onChangeConcepto" process="@this cboConcepto frmPagos" 
                         update="frmPagos dtPagos frmDebe" action="#{recibosBean.onChangeConcepto}"/>

        <p:commandButton style="visibility: hidden" 
                         widgetVar="updateConfirmPagos"
                         update="frmPagos dtPagos frmDebe"/>

        <p:commandButton style="visibility: hidden" 
                         widgetVar="updateConfirm"
                         oncomplete="dtRecibos.filter()" 
                         update="dtRecibos msg"/>
    </ui:define>

</ui:composition>
